1. Field
The present disclosure relates generally to message passing computer programming languages and systems, and more particularly, to systems and methods for instrumenting, observing, analyzing and reporting behavior of message passing computer systems.
2. Background
Computer programs deployed on Internet servers, personal computers and mobile devices are playing an increasing role in a broad spectrum of commerce and social activities. It has become increasingly important for the producers of these software programs to understand the performance of its applications and the behavior of users of those applications. Software manufacturers are challenged to deploy reliable and effective programs while responding to rapid market changes. Detailed data analysis of software programs throughout the life cycle stages of development, debugging, deployment, upgrading, marketing, operations and end-of-life has become important to the overall success of many software applications.
Conventional solutions require the integration of tracking software within the target application. This tracking software in turn generates the data required to understand how a product is being used by its customers, and the nature of software bugs and other computing environmental concerns. While the benefits realized from such analytics data are large there are inherent problems associated with the conventional solution. The collection of analytics data typically requires the addition of tracking and reporting software throughout the target application. The process requires access to and modification of the applications source code. The requirements for the tracking software generally require the cooperation of multiple groups and individuals within an organization adding further weight to implementation complexity. This detailed instrumentation increases the scope and cost of the software engineering process all the while reducing responsiveness to market forces.
Moreover, when instrumented applications are deployed, conventional solutions require wholesale replacement of an application to modify the nature of analytics data collected. Conventional solutions tend to have a ‘one size fits all’ approach and, unless highly customized applications are developed to cover the differing data collection requirements, all stake holders in the software lifecycle must typically be satisfied with a static set of analytics data. These restrictions make it difficult to quickly tune the data collected to different user communities or drill down into areas of interest identified by previously collected data or changes in the market.
Traditional computing environments create a fixed linkage between the code instructions to be executed at the time of compilation and linking. This fixed nature of traditional applications makes it difficult to modify or change the behavior of an application after it has been built, thereby necessitating that any instrumentation for collection of analytics data be built directly into application.